package org.fog.json.map;

import org.fog.json.common.JsonType;

import java.util.List;

/**
 * User: 缪凯
 * Date: 12-1-31
 * Time: 上午9:58
 */
public interface JsonMapBody extends java.io.Serializable{
    /**
     * 获得当前json所在包
     * @return
     */
    public JsonMapPackage getPackage();

    /**
     * 返回所处魔方
     * @return  返回魔方
     */
    public JsonMapCube getCube();

    /**
     * 返回json类型
     * @return
     */
    public JsonType getBodyType();

    /**
     * 获取json名称
     * @return
     */
    public String getBodyId();

    /**
     * 返回json的属性长途
     * @return
     */
    public int getFieldSize();

    /**
     * 获得json指定位置的属性
     *
     * @param location    指定位置，该位置必须大于等于0，并小于属性长度
     * @return    json属性
     */
    public JsonMapField getField(int location);

    /**
     *
     * @param name
     * @return
     */
    public JsonMapField getField(String name);


    /**
     * 获得所有属性
     * @return  返回属性数组
     */
    public List<JsonMapField> getFields();


    /**
     * 根据名称获取映射属性
     * @param name  属性名称
     * @return   映射属性
     */
    public JsonMapField getRefFields(String name);

    /**
     * 获取所有映射类型的属性
     * @return  返回映射属性
     */
    public List<JsonMapField> getRefFields();
}
